In-memory Distributed Computing